/**  
 * All rights Reserved, Designed By www.beonelot.com
 * @Package: com.bccah.modlib.dbdo.service
 * @Filename: AcsControlUserInfoService.java
 * @Description: TODO(AcsControlUserInfoService接口)
 * @author: 金鑫智慧
 * @date: 2020-04-08
 * @version: V1.0
 * @Copyright: 2018 www.beonelot.com Inc. All rights reserved.
 * 注意：本内容仅限于重庆金鑫智慧科技有限公司内部传阅，禁止外泄以及用于其他的商业目的
 */
package com.jinxin.platform.cdacsrecord.core.service;

import com.github.pagehelper.PageInfo;
import com.jinxin.platform.base.common.pojo.JsonResult;
import com.jinxin.platform.cdacsrecord.core.pojo.domains.AcsControlUserInfoDO;
import com.jinxin.platform.cdacsrecord.core.pojo.domains.AppIdSecretInfo;
import com.jinxin.platform.cdacsrecord.core.pojo.domains.DataSyncFrequency;
import com.jinxin.platform.cdacsrecord.core.pojo.domains.RoomDto;
import com.jinxin.platform.cdacsrecord.core.pojo.entity.ResultEntity;
import com.jinxin.platform.cdacsrecord.core.pojo.vo.AcsControlUserInfoVO;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * TODO(AcsControlUserInfoService接口)
 * @Classn: AcsControlUserInfoService
 * @author SY
 * @date 2020-04-08
 */
public interface AcsControlUserInfoService  {

    /**
     * 删除用户信息
     * @param uid
     * @return
     */
    Map delAcsUser(String uid,String companyId,String fafId);

    /**
     * 添加或更新用户信息
     * @param infoVO
     * @param file
     * @return
     */
    Map addAcsUser(AcsControlUserInfoVO infoVO, MultipartFile file) throws IOException;

    Map addMember(AcsControlUserInfoVO infoVO, MultipartFile file);

    ResultEntity uploadUser(MultipartFile file, String community) throws Exception;

    PageInfo<AcsControlUserInfoDO> selParamPage(int page, int size, String userType, String blockID, String roomId, String userName,String community,String parentId,String excludeType);

    List<AcsControlUserInfoDO> selAllParam(String userType, String blockID, String roomId, String userName,String community,String parentId,String excludeType);

    int saveDO(AcsControlUserInfoDO paramDO);

    int updateDO(AcsControlUserInfoDO paramDO);

    int delDO(String pid);

    List<AcsControlUserInfoDO> selDOByInfo(AcsControlUserInfoDO paramDO, String blockIds);

    List<AcsControlUserInfoDO> selAll();

    AcsControlUserInfoDO selById(String id);

    AcsControlUserInfoDO selectOne(HashMap param);

    Map<String, String> deleteMember(String uid,String companyId);

    List<AcsControlUserInfoDO> selectAllUsers();

    List<RoomDto> selectOwners();

    List<Map> countUserByAgeRange();

    List<Map<String, Integer>> countUserByType();

    List<Map<String, Integer>> countUserByMType();

    List<Map<String, Integer>> countOldUserByAgeRange();

    ResultEntity saveOrUpdate(AppIdSecretInfo appIdSecretInfo);

    ResultEntity getAkInfoByUser();

    ResultEntity getSyncfFrequency();

    JsonResult getFaceInfoById(String id);

    ResultEntity saveOrUpdateFre(DataSyncFrequency dataSyncFrequency);
}
